<?php
/*
 * Estado DAL.
 * @Autor: Inicial.cl.
 */
class EstadoDAL {
	//METODO PARA GRABAR ESTADO.
	public static function grabar($oEstado){
		try{
			$arr = array(
				"{#NOMBRE}" => $oEstado->getNombre()
			);
			$query = Util::getQuery($arr, EstadoSQL::$GRABAR_ESTADO);
			$arrDatos = Bd::exec($query);

			$id = Bd::$IDENTITY; //Retorno id insertado
			return $id;
		} catch (Excepcion $e){
			throw new Exception($e->getMessage());
		}
	}

	//METODO PARA EDITAR ESTADO.
	public static function editar($oEstado){
		try{
			$arr = array(
				"{#ID}" => $oEstado->getId(),
				"{#NOMBRE}" => $oEstado->getNombre()
			);
			$query = Util::getQuery($arr, EstadoSQL::$EDITAR_ESTADO);
			$arrDatos = Bd::exec($query);

		} catch (Excepcion $e){
			throw new Exception($e->getMessage());
		}
	}

	//METODO PARA LISTAR ESTADO.
	public static function listar($oEstado){
		try{
			$arr = array(
				"{#ID}" => $oEstado->getId(),
				"{#NOMBRE}" => $oEstado->getNombre()
			);
			$query = Util::getQuery($arr, EstadoSQL::$LISTAR_ESTADO);
			$arrDatos = Bd::exec($query);
			$arrEstado = array();

			if (count($arrDatos) > 0) {
				foreach ($arrDatos as $row) {
					$oEstado = new Estado();

					$oEstado->setId($row["id"]);
					$oEstado->setNombre($row["nombre"]);

					$arrEstado[] = $oEstado;
				}
			}

			return $arrEstado;
		} catch (Excepcion $e){
			throw new Exception($e->getMessage());
		}
	}

	//METODO PARA OBTENER POR ID ESTADO.
	public static function obtenerPorId($id){
		try{
			$arr = array(
					"{#ID}" => $id
				);
			$query = Util::getQuery($arr, EstadoSQL::$OBTENER_ESTADO_POR_ID);
			$arrDatos = Bd::exec($query);

			if (count($arrDatos) > 0) {
				$oEstado = new Estado();

				foreach ($arrDatos as $row) {
					$oEstado->setId($row["id"]);
					$oEstado->setNombre($row["nombre"]);
				}
				return $oEstado;
			}
		} catch (Excepcion $e){
			throw new Exception($e->getMessage());
		}
	}

	//METODO PARA ELIMINAR ESTADO.
	public static function eliminar($id){
		try{
			$arr = array("{#ID}" => $id);
				$query = Util::getQuery($arr, EstadoSQL::$ELIMINAR_ESTADO);
				$arrDatos = Bd::exec($query);

		} catch (Excepcion $e){
			throw new Exception($e->getMessage());
		}
	}
}
?>